package com.offcn.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.offcn.common.JsonController;
import com.offcn.mapper.RoleMapper;
import com.offcn.pojo.Member;
import com.offcn.pojo.vo.ErrorVo;
import com.offcn.pojo.vo.MemberVo;
import com.offcn.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;


@Controller
@RequestMapping("member")
public class MemberController extends JsonController {


    @Autowired
    MemberService memberService;
/*
       需求：跳转member展示页面
       URL：http://localhost:80/eastCMS/member/index
       逻辑：
            接收请求 + 跳转页面

     */

    @RequestMapping("index")
    public String index() {


        return "employee-data";
    }


    /*
           需求：展示员工列表
           URL： http://localhost/eastCMS/member/getList?pageIndex=1&pageSize=2

           逻辑：
                1.接受受请求
                2.接收数据------分页
                3.查询当前登录人员
                    根据当前登录人员查询员工
                4.使用分页打包数据
                5.将分页对象放入json域（工具类）
         */
    @RequestMapping("getList")
    public void getList(@RequestParam(defaultValue = "1") Integer pageIndex, HttpServletRequest request, HttpServletResponse response) {

        HttpSession session = request.getSession();

//        PageHelper.startPage(pageIndex,30);
        PageHelper.startPage(pageIndex, 30);
        Member memberSession = (Member) session.getAttribute("member");

        List<Member> memberList = memberService.getMemberBymemberSession(memberSession);

//        PageInfo<Member> memberPageInfo = new PageInfo<Member>(memberList);

        PageInfo<Member> memberPageInfo = new PageInfo<Member>(memberList);
        JsonUtilObjecToJson(response, "200", "success", memberPageInfo);

    }

     /*
      需求：模糊查询
      URL：http://localhost:8080/eastCMS/member/getListMohu?pageIndex=1&pageSize=2
      逻辑：
           1：接收请求
           2：接收数据 (框框中的数据) 编号 姓名  手机  省份证号
           3：查询member（权限）
           4;将查询数据分页
     */

    @RequestMapping("getListMohu")
    public void getListMohu(@RequestParam(defaultValue = "1") Integer pageIndex, MemberVo memberVo, HttpServletRequest request, HttpServletResponse response) {

        Member memberSession = (Member) request.getSession().getAttribute("member");
        PageHelper.startPage(pageIndex,30);
        List<Member> memberList=memberService.getMemberBymemberSessionMohu(memberSession,memberVo);
        PageInfo<Member> memberPageInfo=new PageInfo<Member>(memberList);
        JsonUtilObjecToJson(response,"200","success",memberPageInfo);

       /* HttpSession session = request.getSession();

        PageHelper.startPage(pageIndex, 30);

        Member memberSession = (Member) session.getAttribute("member");

        List<Member> memberList = memberService.getMemberBymemberSessionMohu(memberSession, memberVo);

        PageInfo<Member> memberPageInfo = new PageInfo<Member>(memberList);

        JsonUtilObjecToJson(response, "200", "success", memberPageInfo);*/
    }


      /*
       需求： 添加员工
       URL：http://localhost:8080/eastCMS/member/save
       逻辑：
             1：接收请求
             2：接收数据
             3：插入（权限）
             4：完毕之后返回个成功与否
     */

    @RequestMapping("save")
    public void save(HttpServletRequest request, Member member, String permissionsId, HttpServletResponse response) {
        HttpSession session = request.getSession();
        Member memberSession = (Member) session.getAttribute("member");

        boolean flag = memberService.save(memberSession, member, permissionsId);
        if (flag)
            JsonUtilObjecToJson(response, "200", "恭喜您添加成功、思密达", null);
        else
            JsonUtilObjecToJson(response, "400", "恭喜您添加失败、思密达", null);


    }



    /*
         需求：根据ids进行删除
         URL：http://localhost/eastCMS/member/batchDelete
         逻辑： 1.接受请求
               2.接收数据（ids）
               3. 判断权限 (经理：可以删除所有人  部长：只能删除自己部门的)
               4. 判断此id下是否有客户
                  有----保留
                  没有----进行第5步
                5.根据id进行删除 member+loginUser + loginUserMember +roleMember
                6.将保留下的member 封装到集合中  List<ErrorVo>: member名字 + 没被删除的原因
                     打包成json返回到页面
           ["1001","1002","1003","1004"]
            //切割字符串   D 数字    \D  非数字   + 多个
            String[] split = ids.split("\\D+");
     */

    @RequestMapping("batchDelete")
    public  void  batchDelete(String ids,HttpServletRequest request,HttpServletResponse response) {
        Member memberSession = (Member) request.getSession().getAttribute("member");

        //切割字符串
        String[] split = ids.split("\\D+");

        //new 一个集合，把id放进去
        ArrayList<Integer> idsList = new ArrayList<>();
        for (int i = 1; i < split.length; i++) {
            // 将String--->integer
            idsList.add(Integer.valueOf(split[i]));
        }

        //创建一个errorList关系模型，里面用来存放用户名和不能删除的原因
        List<ErrorVo> errorVoList=memberService.batchDelete(memberSession,idsList);
        JsonUtilObjecToJson(response,"200","总共删除"+idsList.size()+"个member，但是删除失败了"+errorVoList.size()+"个，删除成功了"+(idsList.size()-errorVoList.size())+"个！！！",errorVoList);



    }


    /*
        需求： 确认删除
        URL：http://localhost:8080/eastCMS/member/deleteMemberTrue/1004，1003，1005，1006
        逻辑：
              1：接收请求
              2：接收数据1004，1003，1005，1006（包含了以前删除的对象）
              3：删除之前要判断 此下是否有客户
                 将客户转移 》》》 部长（经理）（本部门年度最佳职工底下）（本部门年度最佳前三名，平均分配此客户）
                 删除！！！！！四张表!!!
              4:删除成功与否。。。
     */


//    @RequestMapping("deleteMemberTrue/")





}
